home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #2
/
Monster Media No. 2 (Monster Media)(1994).ISO
/
pcboard
/
bcmx120.zip
/
INFOFORM.PPE
(
.txt
)
< prev
next >
Wrap
PCBoard Programming Language Executable
|
1994-07-03
|
11KB
|
712 lines
;------------------------------------------------------------------------------
; .ss.
; `²²'
; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
; .sS²°$$$²²°"' d²°'
; .$$² .$$'
; $$$.,d$$'
; `²S$$S²'
;------------------------------------------------------------------------------
; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
;------------------------------------------------------------------------------
; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Boolean BOOLEAN001
Boolean BOOLEAN002
Boolean BOOLEAN003
Integer INTEGER001
Integer INTEGER002
Integer INTEGER003
Integer INTEGER004
Integer INTEGER005
Integer INTEGER006
Integer INTEGER007
Integer INTEGER008
Integer INTEGER009
Integer INTEGER010
Integer INTEGER011
Integer INTEGER012
Integer INTEGER013
Integer INTEGER014
Integer INTEGER015
Integer INTEGER016
Integer INTEGER017
Integer INTEGER018
Integer INTEGER019
Integer INTEGER020
Integer INTEGER021
Integer INTEGER022
Integer INTEGER023
Integer INTEGER024
Integer INTEGER025
Integer INTEGER026
Integer INTEGER027
Integer INTEGER028
Integer INTEGER029
Integer INTEGER030
Integer INTEGER031
Integer INTEGER032
Integer INTEGER033
String STRING001
String STRING002
String STRING003
String STRING004
String STRING005
String STRING006
String STRING007
String STRING008
String STRING009
String STRING010
String STRING011
String STRING012
String STRING013
String STRING014
String STRING015
String STRING016
String STRING017
String STRING018
String STRING019
String STRING020
String STRING021
String STRING022
String STRING023
String STRING024
String STRING025
String STRING026
String STRING027
String STRING028
String STRING029
String STRING030
String STRING031
String STRING032
String STRING033
String STRING034
String STRING035
String STRING036
String STRING037
String STRING038
;------------------------------------------------------------------------------
BOOLEAN003 = 0
STRING031 = String(PcbNode())
BOOLEAN001 = 0
If (LoggedOn()) Goto LABEL002
If (Exist(PPEPath() + "work\infotmp." + String(PcbNode()))) Goto LABEL001
PrintLn "ERROR: Infoform cannot figure out the users name, contact your sysop"
Wait
End
:LABEL001
STRING019 = ReadLine(PPEPath() + "work\infotmp." + String(PcbNode()), 1)
FClose -1
Delete PPEPath() + "work\infotmp." + String(PcbNode())
Goto LABEL003
:LABEL002
GetUser
STRING019 = U_Name()
:LABEL003
STRING017 = PPEPath() + "\infoform.cfg"
STRING013 = PPEPath() + "\graph\frmtext"
If (LangExt() <> "") Then
If (BOOLEAN001) Then
PrintLn "Langext = " + LangExt()
Wait
Endif
If (Exist(STRING013 + LangExt())) STRING013 = STRING013 + LangExt()
Endif
STRING029 = PPEPath() + "\work\mxlog." + String(STRING031)
STRING034 = PPEPath() + "\work\inftmp." + String(STRING031)
STRING033 = PPEPath() + "\apps\answers." + String(STRING031)
INTEGER018 = ReadLine(STRING017, 1)
If (Upper(ReadLine(STRING017, 2)) == "YES") BOOLEAN002 = 1
STRING030 = PPEPath() + "mx.cfg"
If (BOOLEAN002) Then
If (LoggedOn()) Goto LABEL004
If (Exist(STRING030)) Then
If (Upper(ReadLine(STRING030, 3)) == "YES") Then
FAppend 3, STRING029, 1, 0
Goto LABEL004
Endif
BOOLEAN002 = 0
Endif
Endif
:LABEL004
INTEGER014 = 1
STRING026 = Chr(13)
STRING027 = Chr(27)
STRING028 = Chr(7)
If (BOOLEAN002) Then
STRING015 = "Infoform started at " + String(Time())
Gosub LABEL023
Endif
If (AnsiOn()) Goto LABEL005
If (BOOLEAN002) Then
STRING015 = "No ansi, exiting infoform at " + String(Time())
Gosub LABEL023
Endif
Newline
PrintLn "No ansi capability, exiting infoform"
End
:LABEL005
INTEGER014 = 1
If (LoggedOn() && U_Expert) SaveScrn
StartDisp 1
STRING035 = PPEPath() + "cfg\frmmenus.cfg"
Tokenize ReadLine(STRING035, 1)
INTEGER028 = GetToken()
INTEGER019 = GetToken()
:LABEL006
INTEGER026 = Random(Time())
INTEGER026 = Random(INTEGER028 - 1) + 1
INTEGER027 = INTEGER026 - 1 + 1
Tokenize ReadLine(STRING035, INTEGER027 + 1)
INTEGER029 = GetToken()
INTEGER030 = GetToken()
INTEGER010 = GetToken()
INTEGER011 = GetToken()
INTEGER021 = GetToken()
STRING036 = GetToken()
STRING032 = GetToken()
INTEGER015 = INTEGER018
STRING038 = PPEPath() + "mnutxt\frmmnu"
If (Exist(STRING038 + String(INTEGER026) + LangExt())) Then
STRING038 = PPEPath() + "mnutxt\frmmnu" + String(INTEGER026) + LangExt()
ElseIf (Exist(STRING038 + String(INTEGER026))) Then
STRING038 = PPEPath() + "mnutxt\frmmnu" + String(INTEGER026)
ElseIf (Exist(STRING038 + LangExt())) Then
STRING038 = PPEPath() + "mnutxt\frmmnu" + LangExt()
Endif
STRING037 = ReadLine(STRING038, 1)
STRING023 = ReadLine(STRING038, 2)
STRING022 = ReadLine(STRING038, 3)
STRING025 = ReadLine(STRING038, 4)
STRING024 = ReadLine(STRING038, 5)
INTEGER009 = Len(StripAtx(STRING037)) - 4
:LABEL007
INTEGER012 = INTEGER010
INTEGER013 = INTEGER011
INTEGER008 = 0
If (BOOLEAN003) Goto LABEL008
Color DefColor()
Cls
DispFile PPEPath() + "graph\form" + String(INTEGER026), 1 + 4
:LABEL008
Color DefColor()
If (INTEGER019 >= INTEGER018) Then
INTEGER019 = INTEGER018
Endif
If (INTEGER014 + INTEGER019 <= INTEGER015) INTEGER020 = INTEGER014 + INTEGER019 - 1
If (INTEGER014 + INTEGER019 > INTEGER015) INTEGER020 = INTEGER015
INTEGER022 = INTEGER014
INTEGER023 = INTEGER020
Color DefColor()
INTEGER017 = INTEGER014 % INTEGER019
INTEGER025 = (INTEGER014 - 1) * 2 + 3
For INTEGER016 = INTEGER014 To INTEGER020
If (INTEGER017 == 0) INTEGER017 = INTEGER019
AnsiPos INTEGER012 - INTEGER009, INTEGER013 + INTEGER017 - 1
STRING021 = ReadLine(STRING038, 5 + INTEGER016)
STRING014 = Chr(Asc("a") + INTEGER017)
Print ReplaceStr(STRING037, "%SEP%", STRING014), STRING036, STRING021
Tokenize ReadLine(STRING017, 2 + INTEGER016)
STRING021 = GetToken()
STRING016 = PPEPath() + "\apps\" + Replace(Left(STRING019, 8), " ", "_")
STRING016 = Replace(STRING016, "=", "-")
STRING016 = Replace(STRING016, ",", "-")
STRING016 = Replace(STRING016, ".", "-") + "." + String(INTEGER016)
If (STRING021 == "YES") Then
If (Exist(STRING016)) Then
Print STRING022
Else
Print STRING023
INTEGER008 = INTEGER008 + 1
Endif
ElseIf (Exist(STRING016)) Then
Print STRING024
Else
Print STRING025
Endif
Inc INTEGER017
INTEGER025 = INTEGER025 + 2
Next
If (INTEGER014 + INTEGER019 > INTEGER015) Then
INTEGER016 = INTEGER014 + INTEGER019 - INTEGER015
INTEGER024 = GetY()
For INTEGER017 = 1 To INTEGER016 - 1
AnsiPos INTEGER012 - INTEGER009, INTEGER024 + INTEGER017
Print Space(INTEGER021)
Next
Endif
BOOLEAN003 = 0
AnsiPos INTEGER012, INTEGER013
Print STRING032, StripAtx(ReadLine(STRING038, INTEGER014 + 5))
:LABEL009
STRING018 = Inkey()
If (((Upper(STRING018) == "A") || (STRING018 == "UP")) || (STRING018 == "LEFT")) Then
INTEGER017 = INTEGER014 % INTEGER019
If (INTEGER017 == 0) INTEGER017 = INTEGER019
AnsiPos INTEGER012, INTEGER013 + INTEGER017 - 1
Print ReadLine(STRING038, INTEGER014 + 5)
If (INTEGER014 % INTEGER019 == 1) Then
INTEGER014 = INTEGER014 + INTEGER019 - 1
If (INTEGER014 > INTEGER015) INTEGER014 = INTEGER015
Else
INTEGER014 = INTEGER014 - 1 % INTEGER019
Endif
INTEGER017 = INTEGER014 % INTEGER019
If (INTEGER017 == 0) INTEGER017 = INTEGER019
AnsiPos INTEGER012, INTEGER013 + INTEGER017 - 1
Print STRING032, StripAtx(ReadLine(STRING038, INTEGER014 + 5))
Goto LABEL009
ElseIf (((Upper(STRING018) == "Z") || (STRING018 == "DOWN")) || (STRING018 == "RIGHT")) Then
INTEGER017 = INTEGER014 % INTEGER019
If (INTEGER017 == 0) INTEGER017 = INTEGER019
AnsiPos INTEGER012, INTEGER013 + INTEGER017 - 1
Print ReadLine(STRING038, INTEGER014 + 5)
If (INTEGER014 % INTEGER019 == 0) Then
INTEGER014 = INTEGER014 - INTEGER019 - 1
ElseIf (INTEGER014 == INTEGER015) Then
INTEGER014 = INTEGER022
Else
INTEGER014 = INTEGER014 + 1
Endif
INTEGER017 = INTEGER014 % INTEGER019
If (INTEGER017 == 0) INTEGER017 = INTEGER019
AnsiPos INTEGER012, INTEGER013 + INTEGER017 - 1
Print STRING032, StripAtx(ReadLine(STRING038, INTEGER014 + 5))
Goto LABEL009
Else
If (STRING018 == STRING026) Then
INTEGER016 = INTEGER014
STRING016 = PPEPath() + "\apps\" + Replace(Left(STRING019, 8), " ", "_")
STRING016 = Replace(STRING016, "=", "-")
STRING016 = Replace(STRING016, ",", "-")
STRING016 = Replace(STRING016, ".", "-") + "." + String(INTEGER016)
If (Exist(STRING016)) Goto LABEL010
Gosub LABEL015
INTEGER014 = INTEGER022
Goto LABEL006
Goto LABEL011
:LABEL010
STRING020 = ReadLine(STRING013, 6)
INTEGER032 = GetX()
INTEGER033 = GetY()
DefColor
AnsiPos INTEGER029, INTEGER030
If (INTEGER031 > INTEGER029) Print Space(INTEGER031 - INTEGER029 + 1)
AnsiPos INTEGER029, INTEGER030
STRING018 = YesChar()
InputYN STRING020, STRING018, 1
INTEGER031 = GetX() + 3
AnsiPos INTEGER029, INTEGER030
Print Space(INTEGER031 - INTEGER029 + 1)
If ((STRING018 == YesChar()) || (STRING018 == Upper(YesChar()))) Then
Gosub LABEL015
INTEGER014 = INTEGER022
Goto LABEL006
Else
AnsiPos INTEGER032, INTEGER033
Endif
Goto LABEL009
:LABEL011
ElseIf ((Upper(STRING018) == "Q") || (STRING018 == STRING027)) Then
If (INTEGER008 == 0) Then
DefColor
Cls
If (BOOLEAN002) Then
STRING015 = "Exiting infoform at " + String(Time())
Gosub LABEL023
Endif
End
Else
DefColor
STRING020 = ReadLine(STRING013, 5)
INTEGER032 = GetX()
INTEGER033 = GetY()
AnsiPos INTEGER029, INTEGER030
Print STRING020
INTEGER031 = GetX()
AnsiPos INTEGER032, INTEGER033
If (BOOLEAN002) Then
STRING015 = "Not exiting, mandatory infoforms not filled out"
Gosub LABEL023
Endif
If (BOOLEAN001) Return
Goto LABEL009
Endif
End
Else
Select Case (STRING018)
Case "HOME"
INTEGER017 = INTEGER014 % INTEGER019
If (INTEGER017 == 0) INTEGER017 = INTEGER019
AnsiPos INTEGER012, INTEGER013 + INTEGER017 - 1
Print ReadLine(STRING038, INTEGER014 + 5)
INTEGER014 = INTEGER022
INTEGER017 = INTEGER014 % INTEGER019
If (INTEGER017 == 0) INTEGER017 = INTEGER019
AnsiPos INTEGER012, INTEGER013 + INTEGER017 - 1
Print STRING032, StripAtx(ReadLine(STRING038, INTEGER014 + 5))
Goto LABEL009
Case "END"
INTEGER017 = INTEGER014 % INTEGER019
If (INTEGER017 == 0) INTEGER017 = INTEGER019
AnsiPos INTEGER012, INTEGER013 + INTEGER017 - 1
Print ReadLine(STRING038, INTEGER014 + 5)
INTEGER014 = INTEGER023
INTEGER017 = INTEGER014 % INTEGER019
If (INTEGER017 == 0) INTEGER017 = INTEGER019
AnsiPos INTEGER012, INTEGER013 + INTEGER017 - 1
Print STRING032, StripAtx(ReadLine(STRING038, INTEGER014 + 5))
Goto LABEL009
Case ">", "CTRL PGDN"
If (INTEGER023 + INTEGER019 <= INTEGER015) Then
INTEGER014 = INTEGER023 + 1
BOOLEAN003 = 1
Goto LABEL007
Else
If (INTEGER023 <> INTEGER015) Then
INTEGER014 = INTEGER023 + 1
BOOLEAN003 = 1
Goto LABEL007
Endif
MPrint STRING028
Goto LABEL009
Endif
Case "?"
DefColor
INTEGER032 = GetX()
INTEGER033 = GetY()
AnsiPos 1, 23
SaveScrn
StartDisp 2
Cls
DispFile PPEPath() + "graph\frmhlp", 1 + 4
Wait
StartDisp 1
RestScrn
AnsiPos INTEGER032, INTEGER033
Goto LABEL009
Case "<", "CTRL PGUP"
If (INTEGER022 - INTEGER019 >= 1) Then
INTEGER014 = INTEGER022 - INTEGER019
BOOLEAN003 = 1
Goto LABEL007
Else
MPrint STRING028
Goto LABEL009
Endif
Case Else
If ((STRING018 >= "b") && (STRING018 <= STRING014)) Then
INTEGER014 = INTEGER022 + Asc(STRING018) - Asc("b")
INTEGER016 = INTEGER014
STRING016 = PPEPath() + "\apps\" + Replace(Left(STRING019, 8), " ", "_")
STRING016 = Replace(STRING016, "=", "-")
STRING016 = Replace(STRING016, ",", "-")
STRING016 = Replace(STRING016, ".", "-") + "." + String(INTEGER016)
If (Exist(STRING016)) Goto LABEL012
Gosub LABEL015
INTEGER014 = INTEGER022
Goto LABEL006
Goto LABEL014
:LABEL012
DefColor
INTEGER032 = GetX()
INTEGER033 = GetY()
STRING020 = ReadLine(STRING013, 6)
AnsiPos INTEGER029, INTEGER030
If (INTEGER031 > INTEGER029) Print Space(INTEGER031 - INTEGER029 + 1)
AnsiPos INTEGER029, INTEGER030
STRING018 = YesChar()
InputYN STRING020, STRING018, 1
INTEGER031 = GetX() + 3
AnsiPos INTEGER029, INTEGER030
Print Space(INTEGER031 - INTEGER029 + 1)
If ((STRING018 == YesChar()) || (STRING018 == Upper(YesChar()))) Then
Gosub LABEL015
INTEGER014 = INTEGER022
Goto LABEL006
Goto LABEL013
Endif
AnsiPos INTEGER032, INTEGER033
:LABEL013
Goto LABEL009
Endif
:LABEL014
Goto LABEL009
Endif
Endif
End Select
End
Gosub LABEL023
End
:LABEL015
Tokenize ReadLine(STRING017, 2 + INTEGER007)
STRING012 = GetToken()
STRING010 = GetToken()
STRING011 = GetToken()
INTEGER007 = INTEGER016
STRING005 = Chr(8)
STRING006 = Chr(127)
STRING001 = PPEPath() + "\forms\" + "form." + String(INTEGER007)
If (Exist(STRING001)) Goto LABEL016
DefColor
Cls
PrintLn "ERROR: formfile does not exist, form cannot be filled out"
PrintLn "Please contact the systop and report this to him"
Wait
Return
:LABEL016
STRING002 = PPEPath() + "\apps\" + Replace(Left(STRING019, 8), " ", "_")
STRING002 = Replace(STRING002, "=", "-")
STRING002 = Replace(STRING002, ",", "-")
STRING002 = Replace(STRING002, ".", "-") + "." + String(INTEGER016)
DefColor
Cls
StartDisp 1
FOpen 1, STRING001, 0, 0
FCreate 2, STRING002, 1, 0
If (Ferr(2)) Then
FreshLine
PrintLn "FATAL Error: infoform cannot create file ", STRING002
PrintLn "Please contact the sysop about this, or try to use"
PrintLn "a less exotic name"
Wait
End
Endif
While (1) Do
FGet 1, STRING021
If (Ferr(1)) Then
If (STRING021 == "") Break
Endif
INTEGER005 = InStr(STRING021, "*")
If (INTEGER005) Then
Print Left(STRING021, INTEGER005 - 1)
FPut 2, Left(STRING021, INTEGER005 - 1)
STRING004 = ""
INTEGER006 = Len(STRING021)
For INTEGER016 = INTEGER005 To INTEGER006
STRING003 = Mid(STRING021, INTEGER016, 1)
If (STRING003 <> "*") Then
STRING004 = STRING004 + STRING003
Continue
Endif
Print STRING004
FPut 2, STRING004
INTEGER001 = GetX()
INTEGER002 = GetY()
INTEGER017 = 0
STRING008 = ScrText(INTEGER001, INTEGER002, 1, 0)
While (1) Do
STRING009 = ScrText(INTEGER001 + INTEGER017, INTEGER002, 1, 0)
If (((STRING009 <> " ") && (STRING009 <> STRING008)) && !InStr(STRING011, STRING009)) Then
INTEGER003 = INTEGER017 + 1
Break
Endif
Inc INTEGER017
If (INTEGER001 + INTEGER017 == 80) Then
INTEGER003 = INTEGER017 + 1
Break
Endif
EndWhile
Gosub LABEL019
FPut 2, STRING018
If (STRING018 == "") Then
Print Chr(27) + "[C"
FPut 2, Chr(27) + "[C"
Goto LABEL017
Endif
If (Len(STRING018) > 1) Then
FPut 2, Chr(27) + "[" + String(Len(STRING018) - 1) + "D"
Print Chr(27) + "[" + String(Len(STRING018) - 1) + "D"
Endif
:LABEL017
STRING004 = ""
Next
If (STRING004 <> "") Then
PrintLn STRING004
FPut 2, STRING004
Goto LABEL018
Endif
PrintLn ""
:LABEL018
FPutLn 2, ""
Continue
Endif
FPutLn 2, STRING021
PrintLn STRING021
EndWhile
FClose 1
FClose 2
If (STRING012 == "YES") Then
If (INTEGER008 > 0) INTEGER008 = INTEGER008 - 1
If (BOOLEAN002) Then
STRING015 = "Mandatory infoform (FORM." + String(INTEGER007) + ") filled out"
Gosub LABEL023
Endif
ElseIf (BOOLEAN002) Then
STRING015 = "Non mandatory infoform (FORM." + String(INTEGER007) + ") filled out"
Gosub LABEL023
Endif
Return
Return
:LABEL019
INTEGER004 = 1
STRING018 = ""
:LABEL020
STRING007 = Inkey()
If (STRING007 <> "") Then
If (STRING007 == STRING026) Then
If (Upper(STRING010) == "NO") Then
Return
Goto LABEL021
Endif
If (STRING018 <> "") Then
Return
Endif
:LABEL021
Goto LABEL022
Endif
If ((STRING007 == STRING005) || (STRING007 == STRING006)) Then
If (INTEGER004 > 1) Then
AnsiPos GetX() - 1, GetY()
Print " "
AnsiPos GetX() - 1, GetY()
Dec INTEGER004
STRING018 = Left(STRING018, INTEGER004 - 1)
Endif
Goto LABEL022
Endif
If (INTEGER004 < INTEGER003) Then
STRING018 = STRING018 + STRING007
Print STRING007
Inc INTEGER004
Endif
Endif
:LABEL022
Goto LABEL020
Return
:LABEL023
If (LoggedOn()) Goto LABEL024
FPutLn 3, " " + STRING015
Return
:LABEL024
Log STRING015, 0
Return
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 7 End
; 5 Cls
; 5 Wait
; 3 Color
; 130 Goto
; 171 Let
; 26 Print
; 11 PrintLn
; 89 If
; 2 DispFile
; 1 FCreate
; 1 FOpen
; 1 FAppend
; 3 FClose
; 1 FGet
; 6 FPut
; 3 FPutLn
; 4 StartDisp
; 1 GetUser
; 7 DefColor
; 1 Delete
; 1 Log
; 2 InputYN
; 12 Gosub
; 9 Return
; 3 Inc
; 1 Dec
; 1 Newline
; 4 Tokenize
; 25 AnsiPos
; 1 FreshLine
; 2 SaveScrn
; 1 RestScrn
; 2 MPrint
;
;
; ■ Functions used :
;
; 1 -
; 1 *
; 12 %
; 126 +
; 38 -
; 44 ==
; 8 <>
; 4 <
; 6 <=
; 8 >
; 9 >=
; 70 !
; 10 &&
; 13 ||
; 5 Len(
; 8 Upper()
; 1 Mid()
; 7 Left()
; 5 Space()
; 2 Ferr()
; 10 Chr()
; 3 Asc()
; 2 InStr()
; 2 Random()
; 4 Time()
; 1 U_Name()
; 6 YesChar()
; 6 StripAtx()
; 16 Replace()
; 2 Inkey()
; 24 String()
; 21 PPEPath()
; 4 PcbNode()
; 26 ReadLine()
; 13 GetToken()
; 11 Exist()
; 8 LangExt()
; 1 AnsiOn()
; 10 GetX()
; 8 GetY()
; 3 DefColor()
; 4 LoggedOn()
; 2 ScrText()
; 1 ReplaceStr()
;
;------------------------------------------------------------------------------
;
; Analysis flags : M
;
; M - Send text to modem only ■ 4
; Some informations are sent only to the modem, not to the local
; screen, this is a well known way to make stealth backdoors, Check!
; ■ Search for : SENDMODEM, MPRINT, MPRINTLN
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 3 For/Next
; 2 While/EndWhile
; 50 If/Then or If/Then/Else
; 1 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------